שלום,


אני עובד על אתר כל שהוא,
והגעתי למצב שבו אני צריך לשלוח נתונים מטופס, לפונקצייה..
הקוד של הפונקצייה הוא כזה:
קוד PHP:
function send_support_email($fullname, $email, $phone, $xsubject, $xbody)
  {
  $my_var =  iconv('Windows-1255', 'UTF-8', $my_var);
    header('Content-Type: text/html; charset=windows-1255');
    $to      = $this->site['email'];
    $subject = 'SUBJECT';
    $message = '
    <body dir="rtl">
      <div style="float: right;">
        <b>שלום, לך מנהל יקר,</b><br />
        הגיע פנייה מאתרך '
.$this->site['name'].'<br /><br />
        <b>פרטים על הפנייה: </b><br />
        <b>שם מלא: </b>'
.$fullname.'<br />
        <b>אימייל: </b>'
.$email.'<br />
        <b>טלפון: </b>'
.$phone.'<br />
        <b>נושא הפנייה: </b>'
.$xsubject.'<br />
        <b>תוכן הפנייה: </b>'
.$xbody.'<br /><br />
        <b>בברכה, מערכת '
.$this->site['name'].' - '.$this->site['salogan'].'</b>
      </div>
    </body>
    '
;
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=".$this->site['charset']."" . "\r\n";
    $headers .= 'From: <'.$this->site['email'].'>' . "\r\n";

    $mail = mail($to, $subject, $message, $headers);
    return $mail;
  }

קוד השליחה אל הפונקצייה:

קוד PHP:
$emails->send_support_email($fullname, $email, $phone, $subject, $body);

האימייל שאני מקבל:


דרך אגב, הכל פה ב OOP, ככה שלא יהיה בעיות..

מה אני עושה?!?
האימייל נשלח לי בשפה מוזרה כזו: ׳ ׳ ׳™ ׳¨׳•׳¦׳” ׳‘׳ ׳™׳™׳” ׳ ׳ ׳×׳¨..

מה עושים?!

13 תשובות

avatar ענה intval ב 15 לינואר 2013 #

בשביל מה כל המניפולציות האלה עם קידוד?
תעבוד רק עם utf-8 ולא יהיו לך בעיות

avatar ענה ArielTador ב 15 לינואר 2013 #

בשורה הבאה:

$headers .= "Content-type:text/html;charset=".$this->site['charset']."" . "\r\n";


המשתנה site['charset'] מכיל את utf-8 .
וסתם ככה כל האתר בנוי על utf-8, הבעיה היא כאן ספציפית.

(דרך אגב, אני עושה כל מני מוניפולציות, מכיוון שאני עושה דף הגדרות באתר, כלומר:
שאני יוכל להגדיר הכל דרך פאנל שזה כולל קידוד האתר..
ולכן אני צריך כל מני מוניפולציות.)

אפשר תשובה יותר טובה?

avatar ענה intval ב 15 לינואר 2013 #

אם כל האתר בנוי על utf-8 בשביל מה פה ה iconv הזה
וה header עם קידוד אחר ?

אל תיתן למשתמש להגדיר קידוד. אין לו בשביל מה להגדיר אותו. utf-8 עובד עם כל השפות.

avatar ענה ArielTador ב 15 לינואר 2013 #

אז אתה אומר להוריד headers ? אבל אל תשכח שאני רוצה להגדיר שזה יהיה ב HTML, ושיהיה form...
מה אתה מציע?

avatar ענה shlomo120 ב 15 לינואר 2013 #

למה המשתנה my_var משמש?!
למה מתחת למשתנה הזה אתה מגדיר קידוד כwindows-1255 ? תעבוד עם הקידוד הקבוע של האתר ($this->site['charset'])
ההדר (שבשורה הרביעית) צריך להיות בראש כל עמוד \ עמוד שמאונקלד בכל עמוד כמו קונפיג או משהו כזה . לא צריך כל פונקציה לדחוף את זה ...

avatar ענה ArielTador ב 15 לינואר 2013 #

כל האתר על אותו קידוד(utf-8), אבל בכל זאת זה לא שולח נתונים בפונקציה בעברית, יכול להיות שאני צריך להגדיר משהו אחר בשביל לקבל עברית בשליחת נתונים?
כי כשאני נמצא בעמוד שליחת הטופס, ואני מדפיס את נתוני הטופס, הם בעברית מלאה, אך שזה עובר לפונקצייה, זה הופך להיות לג'יבריש כזה :S

מה עושים?

avatar ענה intval ב 16 לינואר 2013 #

מעיפים קיביני מט כל מה שקשור לקידוד ועובדים עם utf-8.

<?php

function send_support_email($fullname, $email, $phone, $xsubject, $xbody)
{
$to      = $this->site['email'];
$subject = 'SUBJECT';
$message = '
<body dir="rtl">
  <div style="float: right;">
    <b>שלום, לך מנהל יקר,</b><br />
    הגיע פנייה מאתרך '
.$this->site['name'].'<br /><br />
    <b>פרטים על הפנייה: </b><br />
    <b>שם מלא: </b>'
.$fullname.'<br />
    <b>אימייל: </b>'
.$email.'<br />
    <b>טלפון: </b>'
.$phone.'<br />
    <b>נושא הפנייה: </b>'
.$xsubject.'<br />
    <b>תוכן הפנייה: </b>'
.$xbody.'<br /><br />
    <b>בברכה, מערכת '
.$this->site['name'].' - '.$this->site['salogan'].'</b>
  </div>
</body>
'
;

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8\r\n";
$headers .= 'From: <'.$this->site['email'].'>' . "\r\n";

$mail = mail($to, $subject, $message, $headers);
return $mail;
}

avatar ענה ArielTador ב 16 לינואר 2013 #

אלכס, הבעיה היא לא בקידוד האימייל, הבעיה היא בשליחת הנתונים כאן:

$emails->send_support_email($fullname, $email, $phone, $subject, $body);


מכיוון שכשולחים את האימייל, מה שאני כתבתי בתוך האימייל עצמו בעברית, ורק השליפות הם בג'יבריש.

צריך לפתור את הבעיה בשליפה של הנתונים..

avatar ענה intval ב 16 לינואר 2013 #

התקדמנות. מסתבר שלכל הסיפור של האיימייל אין קשר לבעיה.
הבעיה בעצם בשליפה מהמסד נתונים. נכון?
יש אחלה מדריך באתר שמסביר מה חמשת הדברים שצריך לעשות בשביל שהקידוד יעבוד כמו שצריך.
בונוס: אם תשים לב, הוא לא כולל שום דבר על iconv במקומות שונים

avatar ענה ArielTador ב 16 לינואר 2013 #

אפשר קישור למדריך?

avatar ענה ArielTador ב 16 לינואר 2013 #

חח, נכנסתי לזה הרגע.. לא עובד :P
אפשר עוד עזרה?

avatar ענה intval ב 16 לינואר 2013 #

אפשר לכתוב מה לא עובד ואיך אתה יודע שזה לא עובד
אבל בתור שאלה חדשה. אין לזה כבר שום קשר למייל